﻿using System;
using System.Collections.Generic;
using System.Text;

namespace daSyntaxAnalyser.SyntaxTree
{
    using daBase.Objects;

    /// <summary>
    /// Блок объявления ресурсных строк
    /// </summary>
    public class ResourceStringDefinitionsElement : SyntaxTreeElement, ISectionElementElement
    {
        private List<ResourceStringDefinitionElement> resourcestrings;

        /// <summary>
        /// Блок объявления ресурстных строк
        /// </summary>
        public List<ResourceStringDefinitionElement> ResourceStrings { get { return resourcestrings; } set { resourcestrings = value; } }

        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="StartInfo">информация о позиции элемента в коде</param>
        /// <param name="ResourceStrings">объявления ресурсных строк</param>
        /// <param name="Comments">комментарии, относящиеся к элементу</param>
        public ResourceStringDefinitionsElement(TokenInfo StartInfo, List<ResourceStringDefinitionElement> ResourceStrings, List<TokenInfo> Comments)
            : base(StartInfo, Comments)
        {
            resourcestrings = ResourceStrings;
        }

        /// <summary>
        /// Представление элемента в строковом формате
        /// </summary>
        /// <returns>строковое представление элемента</returns>
        public override string ToString()
        {
            return ((resourcestrings != null) && (resourcestrings.Count > 0)) ? string.Format("resourcestring\r\n{0}", Tabulate(resourcestrings.Join("\r\n"))) : string.Empty;
        }

        /// <summary>
        /// Создание типизированного энумератора
        /// </summary>
        /// <returns>энумератор</returns>
        protected override IEnumerator<ISyntaxTreeElement> CreateEnumerator()
        {
            if (resourcestrings != null)
                foreach (ResourceStringDefinitionElement resourcestring in resourcestrings)
                    yield return resourcestring;
        }
    }
}
